import request from '@/utils/request'
import axios from 'axios'
import { getToken } from '@/utils/auth'
import { fetchOcr } from '@/utils/request'

// 查询客户信息列表
export function listCustomer(query) {
  return request({
    url: '/travel/customer/list',
    method: 'get',
    params: query
  })
}

// 查询客户信息详细
export function getCustomer(customerId) {
  return request({
    url: '/travel/customer/' + customerId,
    method: 'get'
  })
}

// 新增客户信息
export function addCustomer(data) {
  return request({
    url: '/travel/customer',
    method: 'post',
    data: data
  })
}

// 修改客户信息
export function updateCustomer(data) {
  return request({
    url: '/travel/customer',
    method: 'put',
    data: data
  })
}

// 删除客户信息
export function delCustomer(customerId) {
  return request({
    url: '/travel/customer/' + customerId,
    method: 'delete'
  })
}

// 导出客户信息
export function exportCustomer(query) {
  return request({
    url: '/travel/customer/export',
    method: 'get',
    params: query
  })
}

// OCR识别身份证
export function ocrIdCard(imageUrl) {
  // 确保只发送纯base64字符串
  let imageData = imageUrl;
  if (imageData.startsWith('data:image')) {
    imageData = imageData.split(',')[1];
  }
  
  console.log('第一种方法 - 使用text/plain发送OCR请求');
  
  return axios({
    url: import.meta.env.VITE_APP_BASE_API + '/travel/customer/ocr/idcard',
    method: 'post',
    data: imageData,
    headers: {
      'Content-Type': 'text/plain',
      'Authorization': 'Bearer ' + getToken()
    }
  });
}

// OCR识别身份证 - 第二种方案（使用FormData格式）
export function ocrIdCardAlt(imageUrl) {
  // 确保图片数据是base64格式
  let imageData = imageUrl;
  if (imageData.startsWith('data:image')) {
    imageData = imageData.split(',')[1];
  }
  
  console.log('第二种方法 - 使用FormData格式发送OCR请求');
  
  // 创建FormData对象
  const formData = new FormData();
  formData.append('imageBase64', imageData);
  
  return axios({
    url: import.meta.env.VITE_APP_BASE_API + '/travel/customer/ocr/idcard',
    method: 'post',
    data: formData,
    headers: {
      'Authorization': 'Bearer ' + getToken()
    }
  });
}

// OCR识别身份证 - 第三种方案（使用JSON格式）
export function ocrIdCardJson(imageUrl) {
  // 确保图片数据是base64格式
  let imageData = imageUrl;
  if (imageData.startsWith('data:image')) {
    imageData = imageData.split(',')[1];
  }
  
  console.log('第三种方法 - 使用JSON格式发送OCR请求');
  
  return axios({
    url: import.meta.env.VITE_APP_BASE_API + '/travel/customer/ocr/idcard',
    method: 'post',
    data: { imageBase64: imageData },
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + getToken()
    }
  });
}

// Base64数据转换为File对象
function dataURLtoFile(dataurl, filename) {
  // 如果是完整的data URL
  if(dataurl.indexOf(',') > -1) {
    const arr = dataurl.split(',');
    const mime = arr[0].match(/:(.*?);/)[1];
    const bstr = atob(arr[1]);
    let n = bstr.length;
    const u8arr = new Uint8Array(n);
    while(n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, {type: mime});
  } 
  // 如果只是base64字符串
  else {
    try {
      const bstr = atob(dataurl);
      let n = bstr.length;
      const u8arr = new Uint8Array(n);
      while(n--) {
        u8arr[n] = bstr.charCodeAt(n);
      }
      return new File([u8arr], filename, {type: 'image/jpeg'});
    } catch (e) {
      console.error('Base64转File出错:', e);
      // 创建一个空文件作为回退
      return new File(['error'], filename, {type: 'text/plain'});
    }
  }
} 